package pe.edu.upc.jtigers.svpn.domain.model;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.codehaus.jackson.annotate.JsonIgnore;

@Entity
public class PlanNegocio implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 9217571591078019382L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int idPlanNegocio;
	private String titulo;
	@Lob()
	private String visionNegocio;
	@Lob()
	private String descripcionPlan;
	private int tiempoEjecucion;
	private double inversionTotal;
	private double roi;
	private double margenNetoAnio;
	@Lob()
	private String rutaArchivo;
	private double precioVenta;
	private boolean eliminado;

	@JsonIgnore
	@OneToMany(mappedBy = "planNegocio")
	private Set<Compra> compras;
	// Un plan de negocio posee de 0 a muchos controles
	@JsonIgnore
	@OneToMany(mappedBy = "planNegocio")
	private Set<Control> controles;
	// Un plan de negocio posee de 0 a muchas preguntas
	@OneToMany(mappedBy = "planNegocio")
	private Set<Pregunta> preguntas;

	// Un plan de negocio tiene un estado
	@ManyToOne
	@JoinColumn(name = "IdDetalleParametro")
	private DetalleParametro estadoPlan;
	// Un plan de negocio pertenece a una categoria
	@ManyToOne
	@JoinColumn(name = "IdCategoria")
	private Categoria categoria;
	// Un plan de negocio pertenece a un sabio
	@ManyToOne
	@JoinColumn(name = "IdSabio")
	private Sabio sabio;

	public PlanNegocio() {
		this.categoria = new Categoria();
		this.estadoPlan = new DetalleParametro();
		this.sabio = new Sabio();
	}

	public int getIdPlanNegocio() {
		return idPlanNegocio;
	}

	public void setIdPlanNegocio(int idPlanNegocio) {
		this.idPlanNegocio = idPlanNegocio;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getVisionNegocio() {
		return visionNegocio;
	}

	public void setVisionNegocio(String visionNegocio) {
		this.visionNegocio = visionNegocio;
	}

	public String getDescripcionPlan() {
		return descripcionPlan;
	}

	public void setDescripcionPlan(String descripcionPlan) {
		this.descripcionPlan = descripcionPlan;
	}

	public int getTiempoEjecucion() {
		return tiempoEjecucion;
	}

	public void setTiempoEjecucion(int tiempoEjecucion) {
		this.tiempoEjecucion = tiempoEjecucion;
	}

	public double getInversionTotal() {
		return inversionTotal;
	}

	public void setInversionTotal(double inversionTotal) {
		this.inversionTotal = inversionTotal;
	}

	public double getRoi() {
		return roi;
	}

	public void setRoi(double roi) {
		this.roi = roi;
	}

	public double getMargenNetoAnio() {
		return margenNetoAnio;
	}

	public void setMargenNetoAnio(double margenNetoAnio) {
		this.margenNetoAnio = margenNetoAnio;
	}

	public boolean isEliminado() {
		return eliminado;
	}

	public void setEliminado(boolean eliminado) {
		this.eliminado = eliminado;
	}

	public String getRutaArchivo() {
		return rutaArchivo;
	}

	public void setRutaArchivo(String rutaArchivo) {
		this.rutaArchivo = rutaArchivo;
	}

	public double getPrecioVenta() {
		return precioVenta;
	}

	public void setPrecioVenta(double precioVenta) {
		this.precioVenta = precioVenta;
	}

	public Set<Pregunta> getPreguntas() {
		return preguntas;
	}

	public void setPreguntas(Set<Pregunta> preguntas) {
		this.preguntas = preguntas;
	}

	public Set<Control> getControles() {
		return controles;
	}

	public void setControles(Set<Control> controles) {
		this.controles = controles;
	}

	public Set<Compra> getCompras() {
		return compras;
	}

	public void setCompras(Set<Compra> compras) {
		this.compras = compras;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public Sabio getSabio() {
		return sabio;
	}

	public void setSabio(Sabio sabio) {
		this.sabio = sabio;
	}

	public void setEstadoPlan(DetalleParametro estadoPlan) {
		this.estadoPlan = estadoPlan;
	}

	public DetalleParametro getEstadoPlan() {
		return estadoPlan;
	}
}
